package Objetos 
{
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import Levels.Level;
	/**
	 * ...
	 * @author Rodrigo Pinho
	 */
	public class Heroi extends MovieClip 
	{
		//public var heroi:MovieClip
		
		private var BO_cima				:Boolean;
		private var BO_baixo			:Boolean;
		private var BO_tiro				:Boolean;
		public var UI_player			:uint;
		private var MC_tiro				:Tiro;
		
		public var velocidadeHeroi		:uint = 10;
		
		public function Heroi()
		{

			Main.getInstance().stage.addEventListener(KeyboardEvent.KEY_DOWN, pressionar, false, 0, true);
			Main.getInstance().stage.addEventListener(KeyboardEvent.KEY_UP, soltar, false, 0, true);
		}
		
		
		/* 
		Comandos dos jogadores:
		*/
		public function pressionar(e:KeyboardEvent):void
		{
			if (UI_player == 1)
			{
				switch(e.keyCode)
				{	
					case Keyboard.W:
						BO_cima = true;
						break;
						
					case Keyboard.S:
						BO_baixo = true;
						break;	
					
					case Keyboard.SPACE:
						BO_tiro = true;
						break;
				}
			} 
			else if (UI_player == 2)
			{
				switch(e.keyCode)
				{	
					case Keyboard.UP:
						BO_cima = true;
						break;
						
					case Keyboard.DOWN:
						BO_baixo = true;
						break;
					
					case Keyboard.NUMPAD_0:
						BO_tiro = true;
						break;
				}
			}
			
		}
		
		public function soltar(e:KeyboardEvent):void
		{
			if (UI_player == 1)
			{
				switch(e.keyCode)
				{
					case Keyboard.W:
						BO_cima = false;
						break;
						
					case Keyboard.S:
						BO_baixo = false;
						break;
						
					case Keyboard.SPACE:
						BO_tiro = false;
						break;
				}
			}
			else if (UI_player == 2)
			{
				switch(e.keyCode)
				{
					case Keyboard.UP:
						BO_cima = false;
						break;
						
					case Keyboard.DOWN:
						BO_baixo = false;
						break;
						
					case Keyboard.NUMPAD_0:
						BO_cima = false;
						break;
				}
			}
		}
		
		private function Atirar():void 
		{
			if (BO_tiro)
			{
				MC_tiro = new Tiro();
					
				if (UI_player == 1)
				{
					MC_tiro.ST_direcao = "direita";
					MC_tiro.x = this.x + this.width / 2;
					MC_tiro.UI_player = 1;
					
				}
				else if (UI_player == 2)
				{
					MC_tiro.ST_direcao = "esquerda";
					MC_tiro.x = this.x - this.width - 20;
					MC_tiro.UI_player = 2;
					Level.colorClip(MC_tiro, 0x00FF00);
				}
				
				MC_tiro.y = this.y;
				Main.getInstance().MC_tela.addChild(MC_tiro);
				Level.AR_Tiros.push(MC_tiro);
				BO_tiro = false
			}
		}
		
		private function Movimentar():void 
		{
			/*
			 Somente permite o deslocamento do herói se ele não ultrapassar a sua altura / 2
			 Lembre-se que o ponto de registro está no meio, por isso altura /2
			 && (significa AND (Lógica E) 
			 */
			if (BO_cima && this.y >= (this.height/ 2))
			{
				this.y -= velocidadeHeroi;
			}
			/*
			 Somente permite o deslocamento do herói se ele não ultrapassar a altura da tela - a sua altura / 2 
			 Lembre-se que o ponto de registro está no meio, por isso altura /2
			 && (significa AND (Lógica E) 
			 */
			if (BO_baixo && this.y <= (480 - this.height/ 2))
			{
				this.y += velocidadeHeroi;
			}
		}
		
		public function update():void
		{
			
			Movimentar();
			Atirar();
		}
	}

}